import logging

import allure
import jsonpath

from utils.send_request import send_jdbc_request


def json_extractor(case, dic, res):
    if case["jsonExData"]:
        with allure.step("JSON提取"):
            # 首先要把 jsonExData 字段的值 key-value 分开, 方便存入变量中
            # 注: 从 excel 表格中获取的数据都是字符串格式, 需要转换, 用到 eval() 函数
            for key, value in eval(case["jsonExData"]).items():
                value = jsonpath.jsonpath(res.json(), value)[0]
                dic[key] = value
            logging.info(f"4.JSON提取, 根据{case["jsonExData"]}提取数据, 此时全局变量内数据为: {dic}")

def jdbc_extractor(case, dic):
    if case["sqlExData"]:
        with allure.step("JDBC提取"):
            for key, value in eval(case["sqlExData"]).items():
                # 注意: 上面 for key, value 中的 value 拿的是测试用例里面的 sql 语句
                # 下面的value是执行语句后获取的 sql 字段, 要存在 dic 中方便后续进行断言
                value = send_jdbc_request(value)
                dic[key] = value
            logging.info(f"4.JDBC提取, 根据{case["sqlExData"]}提取数据, 此时全局变量内数据为: {dic}")
